package cn.xjt.hello;

/**
 * @author xujiangtao
 * @create 2020-07-31-13:49
 */
public class RaceTest {
    public static void main(String[] args) {
        testrace t =new testrace();         //实现多线程类的对象
        new Thread(t,"选手一：乌龟").start();         //new一个多线程对象    乌龟
        new Thread(t,"02兔子").start();         //new一个多线程对象    兔子
    }
}
class testrace implements Runnable{         //继承Runnable接口类
    private String winner;           //定义一个静态变量  胜利者
    @Override
    public void run() {                     //必须重写run()方法
        for (int i = 1; i <=100; i++) {     //for循环模拟赛跑
            if(Thread.currentThread().getName().equals("02兔子") && i%20==0)
            {
                try {
                    Thread.sleep(10);       //判断如果线程名是兔子，并且跑到了n倍20米，就休息10毫秒
                } catch (InterruptedException e) {
                    e.printStackTrace();            //抛出异常
                }
            }
            boolean flag = gameOver(i);             //通过gameOver方法返回游戏是否结束
            if(flag)        //如果游戏结束
            {
                break;      //则跳出循环
            }
            System.out.println(Thread.currentThread().getName()+"-->跑了"+i+"米");
        }
    }
    //判断游戏是否结束      传递过来步数
    public boolean gameOver(int step)
    {
        if(winner!=null)        //已经存在胜利者
        {
            return true;        //已经结束
        }else
        {
            if(step>=100)       //如果步数大于或等于100
            {
                winner=Thread.currentThread().getName();    //胜利者就是线程的名字
                System.out.println("winner is "+winner);    //打印输出胜利者
                return true;        //游戏结束
            }
        }
        return false;
    }
}
